#ifndef __HANDLER_DG_CHARINFO_H__
#define __HANDLER_DG_CHARINFO_H__

#pragma once


#define Handler_FromGameServer_DECL( p )	static VOID On##p( ServerSession * pServerSession, MSG_BASE * pMsg, WORD wSize )
#define Handler_FromGameServer_IMPL( p )	VOID Handler_FromGameServer::On##p( ServerSession * pServerSession, MSG_BASE * pMsg, WORD wSize )

#include <PacketStruct.h>

class ServerSession;

class Handler_FromGameServer
{
public:
	Handler_FromGameServer(){}
	~Handler_FromGameServer(){}

	Handler_FromGameServer_DECL(DG_WAREHOUSE_START_SYN);
	Handler_FromGameServer_DECL(DG_WAREHOUSE_START_DBR);

	Handler_FromGameServer_DECL(DG_WAREHOUSE_END_SYN);
	//Handler_FromGameServer_DECL(DG_WAREHOUSE_END_DBR);


	Handler_FromGameServer_DECL(DG_ITEM_SERIAL_SYN);

	Handler_FromGameServer_DECL(DG_CHARINFO_ALL_REQ_SYN);
	Handler_FromGameServer_DECL( DG_CHARINFO_ALL_REQ_DBR );


	Handler_FromGameServer_DECL(DG_CHARINFO_CHAR_ITEM_CMD);
	Handler_FromGameServer_DECL(DG_CHARINFO_SKILL_CMD);
	Handler_FromGameServer_DECL(DG_CHARINFO_QUICK_CMD);
	Handler_FromGameServer_DECL(DG_CHARINFO_STYLE_CMD);
	Handler_FromGameServer_DECL(DG_CHARINFO_QUEST_CMD);
	Handler_FromGameServer_DECL(DG_CHARINFO_WAREHOUSE_CMD);
	Handler_FromGameServer_DECL(DG_CHARINFO_UDPATE_CMD);
	Handler_FromGameServer_DECL(DG_CHARINFO_UDPATE_SYN);
	Handler_FromGameServer_DECL(DG_CHARINFO_UDPATE_DBR);
	Handler_FromGameServer_DECL(DG_CHARINFO_UDPATE_CMD_DBR);

	Handler_FromGameServer_DECL(DG_CONNECTION_RECOVER_SYN);

	Handler_FromGameServer_DECL( DG_EVENT_SELECT_SYN );
	Handler_FromGameServer_DECL( DG_EVENT_SELECT_DBR );
	Handler_FromGameServer_DECL( DG_EVENT_UPDATE_SYN );
	Handler_FromGameServer_DECL( DG_EVENT_UPDATE_DBR );

	static VOID ExecuteCharacterQuery( ServerSession * pServerSession, DWORD DBIndex, DWORD CharGUID, DWORD UserKey, BYTE Type );
};


#endif // __HANDLER_DG_CHARINFO_H__